﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using app_Cd.accesoDatos;

namespace app_Cd.LogicaNegocio
{
    public static class admUsuario
    {
        /// <summary>
        /// Busca si el usuario existe en la base de datos
        /// </summary>
        /// <param name="busqueda">Nombre de usuario</param>
        /// <returns></returns>
        public static Usuario BuscaUsuario(string busqueda) 
        {
            admCDEntities bd = new admCDEntities();
            return bd.Usuario.SingleOrDefault(u=> u.Nombre==busqueda);
        }
        /// <summary>
        /// Busca el módulo al cual pertenece el usario
        /// </summary>
        /// <param name="busqueda">Descripción del módulo</param>
        /// <returns></returns>
        public static Modulo BuscaModulo(string busqueda)
        {
            admCDEntities bd = new admCDEntities();
            return bd.Modulo.SingleOrDefault(m => m.Descripcion == busqueda);
        }
        /// <summary>
        /// Valida si el nombre y clave coiciden con los almacenados en la base de datos
        /// </summary>
        /// <param name="nombre">Nombre de usuario</param>
        /// <param name="clave">Clave de usuario</param>
        /// <returns></returns>
        public static bool validaUsuario(string nombre, string clave)
        {
            admCDEntities bd = new admCDEntities();
            return bd.Usuario.Any(u=> u.Nombre==nombre && u.Clave==clave);
        }
        /// <summary>
        /// Permite ingresar un nuevo usuario a la base de datos
        /// </summary>
        /// <param name="nombre">Nombre de uasuario</param>
        /// <param name="clave">Clave de usuario</param>
        /// <param name="id_modulo">Identificador del módulo del usuario</param>
        /// <returns></returns>
        public static string IngresaUsuario(string nombre,string clave, int id_modulo)
        {
            admCDEntities bd = new admCDEntities();
            var user = BuscaUsuario(nombre);
            if (user != null)
            {
                string mensaje = "El Usuario ya existe";
                return mensaje;
            }
            else
            {
                Usuario nuevousuario = new Usuario
                {
                    Nombre = nombre,
                    Clave = clave,
                    ID_modulo = id_modulo
                };
                bd.Usuario.Add(nuevousuario);
                bd.SaveChanges();
                string mensaje = "Usuario Ingresado";
                return mensaje;
            }

        }
        /// <summary>
        /// permite actualizar un usuario en la base de datos
        /// </summary>
        /// <param name="nombre">Nombre de usario</param>
        /// <param name="clave">Clave de usuario</param>
        /// <returns></returns>
        public static string ActualizarUsuario(int idUs, string nombre, string clave)
        {
            admCDEntities bd = new admCDEntities();
            Usuario actualizaUs = bd.Usuario.Find(idUs);
            actualizaUs.Nombre = nombre;
            actualizaUs.Clave = clave;
            bd.SaveChanges();
            string mensaje = "Datos actualizados";
            return mensaje;
        }
        /// <summary>
        /// Permite eliminar un usuario de la base de datos
        /// </summary>
        /// <param name="id">Identificador de usuario</param>
        /// <returns></returns>
        public static string EliminaUsuario(string usuario)
        {
            admCDEntities bd = new admCDEntities();
            Usuario eliminaUs = bd.Usuario.FirstOrDefault(u=> u.Nombre==usuario);
            bd.Usuario.Remove(eliminaUs);
            bd.SaveChanges();
            string mensaje = "Usuario borrado";
            return mensaje;

        }
    }
}
